鐵人賽經過一半,Nuxt3 的功能基本介紹差不多了,今天補上自己在建置專案時習慣會加上的 lint,接下來就會結合前兩週的內容來實作一個 Blog。
團隊協作時統一樣式和撰寫風格能夠帶來不少益處,但是要使用時總是讓人苦惱不知道該如何配置,今天來分享一些簡單的設置。
Nuxt3 除了安裝 eslint 本體之外,要安裝的額外套件也不少,這些套件也跟 Nuxt3 一樣持續發展中(表示較高可能有 Bug),我是參考 CSDN 上找到的文章調整設定,以下是設定步驟:
npm i -D eslint-plugin-nuxt@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest eslint@latest
本系列文環境配置使用 Typescript,上列套件僅列出 eslint 相關,基礎套件需要另外安裝
{
"env": {
"browser": true,
"es2022": true
},
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:nuxt/recommended"
],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"parser": "@typescript-eslint/parser"
},
"plugins": ["@typescript-eslint"],
"rules": {
//
}
}
{
//,,,
"scripts": {
// ...
"lint": "eslint . --ext .ts,.vue",
"lint:fix": "eslint . --ext .ts,.vue --fix"
},
// ...
}
npm run lint
Prettier 和 Eslint 的結合和其他專案一樣,需要幾個輔助套件來避免衝突:
npm i -D prettier eslint-plugin-prettier eslint-config-prettier
{
"env": {
"browser": true,
"es2022": true
},
"extends": [
+ "plugin:prettier/recommended",
"plugin:@typescript-eslint/recommended",
"plugin:nuxt/recommended"
],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"parser": "@typescript-eslint/parser"
},
"plugins": ["@typescript-eslint"],
"rules": {
+ "prettier/prettier": [
+ "error",
+ {
+ // .....
+ }
+ ]
}
}
npm run lint
以下是我會做的設定,僅供參考:
"rules": {
"vue/multi-word-component-names": 0, // Nuxt3 有一些元件都會是單一名稱,例如404,所以最好是關掉
"vue/singleline-html-element-content-newline": 0, // 這條開啟會限制 html 標籤有內容就換行,如果很短實在沒必要特別換行
"vue/require-default-prop": 0, // 要求 props 要有預設值
"prettier/prettier": [
"error",
{
"printWidth": 120, // 看公司給的螢幕多大
"tabWidth": 2, // 建議tab都是2個空格寬
"singleQuote": true, // 古早時都用雙引號,但現在習慣單引號
"semi": true, // 看個人或團隊習慣,古早時JS一定要結尾分號
"trailingComma": "none" // 結尾逗號
}
]
}
每個人的電腦開發環境不盡相同,即使裝了這些 lint 工具也無法確保每個參與者都有執行 lint 的習慣或設置自動 fix,husky 是一個 git hook,透過設置 husky 就可以確保每位開發者在 commit 時候有完成 lint 檢查,方便維護程式碼的一致性,lint-staged 則是讓 lint 只對 git add 時的檔案生效,節省時間。
npm i -D husky lint-staged
{
"hooks": {
"pre-commit": "lint-staged"
}
}
{
"*.+(vue|js|jsx|ts|tsx)": [
"eslint --fix",
"git add"
],
"*.+(json|css|md)": [
"prettier --write",
"git add"
]
}
git add .
,再來看看程式碼是不是變漂亮了。Thanks for the guide, however I noticed that you seem to be missing: npm install --dev typescript
which causes @typescript-eslint
to yell error.
Thanks a lot, I'll add it :)